/*******************************************************************\
| Sphere.h
|
| CREATED:		9.5.2009
| DESCRIPTION:
| 
| Sphere object implementation
\********************************************************************/
#ifndef SPHERE_H
#define SPHERE_H

#include "Object.h"

namespace PhotonMapping
{

//*****************************************************************************
// class overview:
//   
//-----------------------------------------------------------------------------
class Sphere : public IObject
{
	public:
		Sphere(const Math::Vector3 p_Center, float p_Radius, intx p_MaterialId);

	public:
		virtual intx TestIntersection(const Math::Ray& p_Ray, float &p_Distance);

		virtual const Math::Sphere& GetBoundingSphere() const;

		virtual const Math::Vector3 GetNormalAt(const Math::Vector3& p_Pos);

	private:
		// sphere properties
		Math::Sphere m_Sphere;
};

}

#endif // SPHERE_H
